package cn.sixmillions.yuqueblog.config;

import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.HttpHeaders;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

/**
 * @author lbw
 */
@Configuration
public class WebConfig implements WebMvcConfigurer {

    /**
     * 设置允许跨域请求
     */
    @Bean
    @ConditionalOnProperty(value = "cors.enable", havingValue = "true")
    public WebMvcConfigurer corsConfigurer() {
        return new WebMvcConfigurer() {
            @Override
            public void addCorsMappings(CorsRegistry registry) {
                registry
                        .addMapping("/**")
                        // 允许跨域的域名
                        //.allowedOrigins("http://yyy.com", "http://xxx.com")
                        // 允许所有域
                        .allowedOrigins("*")
                        //springboot 2.6.x 用下面这个
                        //.allowedOriginPatterns("*")
                        // 允许任何方法（post、get等）
                        .allowedMethods("*")
                        // 允许任何请求头
                        .allowedHeaders("*")
                        // 允许证书、cookie
                        .allowCredentials(true)
                        .exposedHeaders(HttpHeaders.SET_COOKIE)
                        // maxAge(3600)表明在3600秒内，不需要再发送预检验请求，可以缓存该结果
                        .maxAge(3600L);
            }
        };
    }
}
